﻿define(function(require,exports,module) {
	var myPub = require('./public');

    $(function() {
    	var oBillingType = $('.js_billingType');		// 发票类型
    	var oText = $('.js_Text');						// 输入框
		var oBillMobile = $('.js_billMobile');			// 手机输入框
		var oBillMail = $('.js_billMail');				// 邮箱
		var oBillingHead = $('.js_billingHead'); 				// 发票抬头选择
		var oBillingContList = $('.js_billingContList'); 		// 普通商品发票内容选择
		var oBillingInfo = $('.js_billingInfo'); 				// 收票信息
		var oSubmitApply = $('.js_submitApply');				// 提交
        var oSubmitCancel = $('.js_submitCancel');				// 不使用
        var oUseBillSide = $('.js_useBillSide');      // 提交订单 发票使用入口
        var oBillSide = $('.js_billSide');            // 发票弹框
        var oShadow = $('.js_shadow');              // 阴影
        var oBllingText = $('.js_billingText');      // 发票信息展示
        var $isJifen = $('#isJifen'); //判断是否是积分商品
        var $oJifen = $('.js_isJifen');
        var $ljkType = $('.ljkType'); //选中礼品卡
        var bSideOff = true;
        var sType = oUseBillSide.attr("itype");           // 后台传递发票类型 [0,1],[0],[1], sType 是字符串；
        var moveHeight = oBillSide.outerHeight(true);    // 发票弹框高度，包含margin ，padding，border；
        var oTips = $('.js_tips');                       // 电子发票提示文字；

        var mobile=$('.js_mobile').val();

        oBillSide.css({'bottom': -moveHeight });

        //是积分商品去掉发票信息
        //是积分商品去掉“发票信息”。我添加多一条件判断，如果发票类型 sType 为 null 或者 长度为 0 ，那直接隐藏发票信息；
        // || !sType || sType == ' ' || sType.length <= 0
        if( $isJifen.val() != 'false' || !sType || sType == ' ' || sType.length <= 0  ){
            $oJifen.hide();
        }

        // 如果返回的类型包含有“电子发票”则显示提示文字；
        if (sType && sType.indexOf('1') >= 0) {
            oTips.show();
        }


        function OnlyBillType(sType) {
            var _Li = oBillingType.find('li');
            // 判断禁止发票类型          
            _Li.each(function (i) {
                if(sType.indexOf(_Li.eq(i).attr('billType'))<=0){
                    _Li.eq(i).addClass('unactive');
                    _Li.eq(i).attr("style","display: none;");
                }

                //  如果只有一个发票类型，因为默认选中的是“普通发票”，所以当只有一个发票类型且发票类型为“电子发票”，则默认发票类型改为“电子发票”
                if( sType.indexOf(_Li.eq(i).attr('billType')) >= 0 && sType.length == 3 ){
                    oBillingType.find('li').removeClass('active');
                    $(this).addClass('active');
                    if ( _Li.eq(i).attr('billType') == '1' ) {
                        oBillingInfo.show();
                    }
                }
            });
        }

        //验证地址是否选择
        function checkAddress() {
            var address = $('#province').html();
            if (null != address && "" != address) {
                return true;
            } else {
                return false;
            }
        }

        // 发票弹框显示
        oUseBillSide.hammer().on('tap', function () {
            if($ljkType.hasClass('active')){
                return;
            }

        	if(!checkAddress()) {
        		myPub.TipLayer('请您先填写地址信息！')
        		return;
        	}
            if (!bSideOff) return;

            bSideOff = false;
            OnlyBillType(sType);
            var companyName = $("#companyName").val();
            var taxpayerCode = $("#taxpayerCode").val();
            if (companyName == null || companyName == '' || taxpayerCode == null || taxpayerCode == ''){
                G_JSON_GET(base+'/m/o/1.0/invoiceInfo/get',{
                    mobile:mobile
                },function (data) {
                    if(data.ret.code == 0){
                        $("#companyName").val(data.data.companyName);
                        $("#taxpayerCode").val(data.data.taxCode);
                    }
                });
            }
            oBillSide.show().stop().animate({ 'bottom':0 },300,function() {
                oShadow.show();
                bSideOff = true
            });
            myPub.HamstopPropaga();
        });

        oShadow.hammer().on('tap', function () {
            //隐藏服务
            HideBillSide();
            myPub.HamstopPropaga();
        });

        // 发票弹框关闭
        function HideBillSide(fn) {
            oBillSide.stop().animate({bottom:-moveHeight},300,function(){
                oBillSide.hide();
                oShadow.hide();
                // $('html').removeClass('bodyHeight100');
                bSideOff = true
                if(fn)fn();
            });
        }


		// 手机号中间隐藏4位数
        if(oBillMobile.find('.js_mobile').length>0){
            HideNum(oBillMobile.find('.js_mobile'));
        }

		// 表格显示和隐藏清除按钮
        oText.on('input propertychange',function(){
            var _val = $(this).val();
            var oClearBtn = $(this).siblings('.js_clearBtn');
            _val == '' ? oClearBtn.hide(): oClearBtn.show();
		});

        // 手机验证
        oBillMobile.find('input').on('input propertychange',function(){ 	
            var _val = $(this).val();
            if( checkPhoneNumber(_val) ) {
                oBillMobile.removeClass('has_error').addClass('has_success')
            }
            else {
                oBillMobile.addClass('has_error').removeClass('has_success')
            }
        });

        //邮箱
        oBillMail.find('input').on('input propertychange', function () {        	
            var _val = $(this).val();
            if(checkMail(_val)) {
                oBillMail.removeClass('has_error').addClass('has_success')
            }
            else {
                oBillMail.addClass('has_error').removeClass('has_success')
            }
        });

        // 发票类型选择
        oBillingType.find('li').hammer().on('tap', function () {

            // 判断是否是禁止的
            if($(this).hasClass('unactive')) return;
            oBillingType.find('li').removeClass('active');           
            $(this).addClass('active');           
            if($(this).attr('billType')== '0'){
               oBillingInfo.hide();
        	}else{
                oBillingInfo.show();
        	}
            
        });

        // 抬头发票 个人和公司 选择
        oBillingHead.find('li').hammer().on('tap', function () {
	        	oBillingHead.find('li').removeClass('active');
	            $(this).addClass('active');
				if($(this).attr('billHead') == 'company') {
	                oBillingHead.find('.js_companyBill').show();
	                return
				}
	            oBillingHead.find('.js_companyBill').hide();
        });

        // 发票内容 选择
        oBillingContList.find('li').hammer().on('tap', function () {
            oBillingContList.find('li').removeClass('active');
            $(this).addClass('active');
        });

        function submitInvoiceInfo(mobile,companyName,taxCode) {
            G_JSON_POST(base+'/m/o/1.0/invoiceInfo/modify',{
                mobile:mobile,
                companyName:companyName,
                taxCode:taxCode
            },function (date) {

            })
        };
        // 提交
        oSubmitApply.hammer().on('tap', function () {
            // 发票类型的属性
        	var _oBillType = oBillingType.find('li.active').attr('billType');
        	var itype= $('.js_billingType li.active').attr('value'); //发票类型信息
    		var ihead= $('.js_billingHead li.active').attr('value'); //发票抬头信息
    		var icontent=$('.js_billingContList li.active').children('span:eq(1)').html();
    		var companyName=$('#companyName').val();
    		var taxCode=$('#taxpayerCode').val();
    		var imobile=$('#billMobile').val();
            if(imobile.indexOf("*")>0){
                imobile=mobile;
            }
    		var iemail=$('#billElectron').val();
            // 普通发票
            if (_oBillType == '0') {
                checkBillHead(function () {
                    checkContentNull(function () {
                        HideBillSide();
                        oBllingText.text('个人普通发票')
                        var invoice = {"itype": parseInt(itype), "ihead": parseInt(ihead), "icontent": icontent};
                        $('#invoice').val(JSON.stringify(invoice));
                    })
                }, function () {
                    checkCompanyInfo(function () {
                        checkContentNull(function () {
                            HideBillSide();
                            oBllingText.text('公司普通发票');
                            var invoice = {
                                "itype": parseInt(itype),
                                "ihead": parseInt(ihead),
                                "icontent": icontent,
                                "companyName": companyName,
                                "taxCode": taxCode
                            };
                            submitInvoiceInfo(imobile,companyName,taxCode);
                            $('#invoice').val(JSON.stringify(invoice));
                        })
                    })
                });
            } else if (_oBillType == '1') {
                // 电子发票
                checkBillHead(function () {
                    checkContentNull(function () {
                        checkMobileNull(function () {
                            HideBillSide();
                            oBllingText.text('个人电子发票');
                            var invoice = {
                                "itype": parseInt(itype),
                                "ihead": parseInt(ihead),
                                "icontent": icontent,
                                "imobile": imobile,
                                "iemail": iemail
                            };
                            $('#invoice').val(JSON.stringify(invoice));
                        });
                    })
                }, function () {
                    checkCompanyInfo(function () {
                        checkContentNull(function () {
                            checkMobileNull(function () {
                                HideBillSide();
                                oBllingText.text('公司电子发票');
                                var invoice = {
                                    "itype": parseInt(itype),
                                    "ihead": parseInt(ihead),
                                    "icontent": icontent,
                                    "companyName": companyName,
                                    "taxCode": taxCode,
                                    "imobile": imobile,
                                    "iemail": iemail
                                };
                                submitInvoiceInfo(imobile,companyName,taxCode);
                                $('#invoice').val(JSON.stringify(invoice));
                            })
                        })
                    });
                });
            }
        });

        // 不使用发票
        oSubmitCancel.hammer().on('tap', function () {
            HideBillSide();
            $('#invoice').val("");
            oBllingText.html("添加发票信息");
        });

        // 检测发票抬头类型是 公司还是个人
        function checkBillHead(argPerson, argCompany) {
            // 发票抬头类型
            var _oBillHead = oBillingHead.find('li.active').attr('billHead');
            if (_oBillHead == null || _oBillHead == "") {
                myPub.TipLayer('请选择发票抬头！')
            }
            if (_oBillHead == 'person') {
                if (argPerson) argPerson();
            }
            else if (_oBillHead == 'company') {
                if (argCompany) argCompany();
            }
        }

		//检测发票内容
        function checkContentNull(fn) {
            var content = $('.js_billingContList li.active').children('span:eq(1)').html();
            if (content == null || content == "") {
                myPub.TipLayer('请选择发票内容！')
            } else {
                if (fn) fn()
            }
        }

		// 检测发票抬头公司信息  输入框是否为空
        function checkCompanyInfo(fn) {
            var _oCompanyBillInput = oBillingHead.find('.js_companyBill input');
            if (_oCompanyBillInput.eq(0).val() == '') {
                myPub.TipLayer('请输入您的公司名称！')
            }
            else if (_oCompanyBillInput.eq(1).val() == '') {
                myPub.TipLayer('请输入纳税人识别码！')
            }
            else {
                if (fn) fn()
            }
        }

        // 检测收票输入框是否为空
        function checkMobileNull(fn) {
            var _mobile = oBillMobile.find('input').val();
            var _email = oBillMail.find('input').val();
            if (_mobile == '') {
                myPub.TipLayer('请输入您的手机号码！')
            } else if (!checkPhoneNumber(_mobile)) {
                myPub.TipLayer('请输入正确的手机号码！')
            }
            else if ( _email == "") {
                myPub.TipLayer('请输入您的邮箱！')
            }
            else if (!checkMail(_email) && _email != "") {
                myPub.TipLayer('请输入正确的邮箱！')
            }
            else {
                if (fn) fn()
            }
        }
        // 校验电话号码
        function checkPhoneNumber(v) {
            var regMobile = /^1[2|3|4|5|6|7|8|9]\d{9}$/;   //验证手机号码
            var regPhone = /^(^0\d{2}-?\d{8}$)|(^0\d{3}-?\d{7}$)|(^\(0\d{2}\)-?\d{8}$)|(^\(0\d{3}\)-?\d{7}$)$/;   //验证固定电话
            if (regMobile.test(v) || regPhone.test(v) || HidePhone(mobile)==v) {
                return true;
            }
            return false;
        }

    });




    // 校验邮箱
    function checkMail(v) {
        var regMail = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,29})+$/;
        if (regMail.test(v)) {
            return true
        }
        return false;
    }

    // 隐藏手机中间4位
    function HideNum(obj) {
        var phone = obj.val();
        var mphone = phone.substr(3,4);
        var lphone = phone.replace(mphone,"****");
        obj.attr("value", lphone);
    }
    function HidePhone(phone) {
        var mphone = phone.substr(3,4);
        var lphone = phone.replace(mphone,"****");
        return lphone;
    }

});



